/************************************************************
* Filename: Matrix2D.h
* Purpose: Library for basic 2D matrix/transformation functions.
* Author: Jeremy Kings
* Revision: 2 (17 November 2010)
* Base: Matrix2D.h - CS529 Project 3
*
* Copyright 2010, Digipen Institute of Technology
************************************************************/
#pragma once 

#include "Vector2D.h"

typedef D3DXMATRIXA16 Matrix4;

/*
This function returns the Identity matrix.
*/
Matrix4 Matrix4Identity();

/*
This functions calculated the transpose matrix of Mtx and returns it.
*/
Matrix4 Matrix4Transpose(const Matrix4& Mtx);

/*
This function creates a translation matrix from x & y and returns it.
*/
Matrix4 Matrix4Translate(float x, float y, float z);

/*
This function creates a scaling matrix from x & y and returns it.
*/
Matrix4 Matrix4Scale(float x, float y, float z);

/*
This matrix creates a rotation matrix from "Angle" whose value is in degree.
Return the resultant matrix.
*/
Matrix4 Matrix4RotZDeg(float Angle);

/*
This matrix creates a rotation matrix from "Angle" whose value is in radian.
Return the result.
*/
Matrix4 Matrix4RotZRad(float Angle);

/*
This function multiplies the matrix Mtx with the vector Vec and returns the result.
*/
Vector2D Matrix4MultVec2(const Matrix4& Mtx, Vector2D Vec);

// Find the inverse of the givne matrix.
Matrix4 Matrix4Inverse(const Matrix4& Mtx);
